package day06;

import java.io.File;
import java.io.FileFilter;
import java.io.RandomAccessFile;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

import org.junit.Test;

/**
 * 编写一个程序，将当前目录下所有员工文件进行读取，并解析出所有员工为Emp
 * 对象并存入集合。然后排序该集合，按照员工的年龄排序，年龄大的靠前，年龄小
 * 的靠后。排序完毕后输出结果。
 * @author Bonnie
 *
 */
public class Test11 {
	@Test
	public void test() throws Exception {
		File dir = new File(".");
		List<Emp> list = new ArrayList<Emp>();
		File[] files = dir.listFiles(new FileFilter() {

			@Override
			public boolean accept(File file) {// 遍历目录中所有文件找出.emp文件
				return file.getName().endsWith(".emp");
			}
			
		});
		for (File f : files) {
			list.add(emps(f));
		}
//		System.out.println(list);
		Collections.sort(list, new Comparator<Emp>() { // 修改排序方式

			@Override
			public int compare(Emp o1, Emp o2) {
				return o2.getAge() - o1.getAge();
			}
			
		});
		
		for (Emp a : list) {
			System.out.println(a);
		}
	}
	
	public Emp emps(File f) throws Exception {
		RandomAccessFile raf = new RandomAccessFile(f, "r");
		byte[] bs = new byte[(int)f.length()];
		int len = raf.read(bs);
		String info = new String(bs, 0, len);
		String[] ss = info.split(",");
		String name = ss[0];
		int age = Integer.parseInt(ss[1]);
		String gender = ss[2];
		int salary = Integer.parseInt(ss[3]);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date hiredate = sdf.parse(ss[4]);
		Emp emp = new Emp(name, age, gender, salary, hiredate);
		raf.close();
		return emp;
	}
	
}
